#ifndef DTU_TYPES_H
#define DTU_TYPES_H

#include <stdint.h>
#include <stdbool.h>
#include <time.h>

/* 推送协议枚举 */
typedef enum {
    PUSH_PROTOCOL_MQTT = 0,   /* MQTT协议 */
    PUSH_PROTOCOL_HTTP = 1,   /* HTTP协议 */
    PUSH_PROTOCOL_TCP = 2,    /* TCP协议 */
    PUSH_PROTOCOL_UDP = 3     /* UDP协议 */
} push_protocol_t;

/* 数据格式枚举 */
typedef enum {
    DATA_FORMAT_JSON = 0,     /* JSON格式 */
    DATA_FORMAT_XML = 1,      /* XML格式 */
    DATA_FORMAT_CSV = 2,      /* CSV格式 */
    DATA_FORMAT_BINARY = 3    /* 二进制格式 */
} data_format_t;

/* 数据类型枚举 */
typedef enum {
    DATA_TYPE_INT16 = 0,      /* 16位整数 */
    DATA_TYPE_UINT16 = 1,     /* 16位无符号整数 */
    DATA_TYPE_INT32 = 2,      /* 32位整数 */
    DATA_TYPE_UINT32 = 3,     /* 32位无符号整数 */
    DATA_TYPE_FLOAT = 4,      /* 32位浮点数 */
    DATA_TYPE_DOUBLE = 5,     /* 64位双精度浮点数 */
    DATA_TYPE_BOOL = 6        /* 布尔值 */
} data_type_t;

/* 字节序枚举 */
typedef enum {
    BYTE_ORDER_BIG_ENDIAN = 0,    /* 大端序 */
    BYTE_ORDER_LITTLE_ENDIAN = 1  /* 小端序 */
} byte_order_t;

/* MQTT QoS级别 */
typedef enum {
    MQTT_QOS_0 = 0,           /* 最多一次 */
    MQTT_QOS_1 = 1,           /* 至少一次 */
    MQTT_QOS_2 = 2            /* 恰好一次 */
} mqtt_qos_t;

/* MQTT连接状态 */
typedef enum {
    MQTT_STATE_DISCONNECTED = 0,
    MQTT_STATE_CONNECTING = 1,
    MQTT_STATE_CONNECTED = 2,
    MQTT_STATE_DISCONNECTING = 3,
    MQTT_STATE_ERROR = 4
} mqtt_state_t;

#endif /* DTU_TYPES_H */
